Micron Document
🎖️GitЯра🎖️

mesh_service_example/src/main/kotlin/com/meshtastic/android/meshserviceexample/MainScreen.kt e249461e3c77e41a3928c01537da0a173c687621 (e249461e) Text, 23.76 KB

T8b949e/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tf0883e@fileTb4b4b4:Te6edf3SuppressTb4b4b4(Ta5d6ff"Ta5d6ffTooManyFunctionsTa5d6ff"Tb4b4b4)

Tff7b72package T7ee787com.meshtastic.android.meshserviceexample

Tff7b72import T7ee787androidx.compose.foundation.background
Tff7b72import T7ee787androidx.compose.foundation.clickable
Tff7b72import T7ee787androidx.compose.foundation.layout.Arrangement
Tff7b72import T7ee787androidx.compose.foundation.layout.Box
Tff7b72import T7ee787androidx.compose.foundation.layout.Column
Tff7b72import T7ee787androidx.compose.foundation.layout.PaddingValues
Tff7b72import T7ee787androidx.compose.foundation.layout.Row
Tff7b72import T7ee787androidx.compose.foundation.layout.Spacer
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxSize
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxWidth
Tff7b72import T7ee787androidx.compose.foundation.layout.height
Tff7b72import T7ee787androidx.compose.foundation.layout.heightIn
Tff7b72import T7ee787androidx.compose.foundation.layout.padding
Tff7b72import T7ee787androidx.compose.foundation.layout.size
Tff7b72import T7ee787androidx.compose.foundation.layout.width
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyColumn
Tff7b72import T7ee787androidx.compose.foundation.lazy.items
Tff7b72import T7ee787androidx.compose.foundation.rememberScrollState
Tff7b72import T7ee787androidx.compose.foundation.shape.CircleShape
Tff7b72import T7ee787androidx.compose.foundation.verticalScroll
Tff7b72import T7ee787androidx.compose.material.icons.Icons
Tff7b72import T7ee787androidx.compose.material.icons.automirrored.rounded.BatteryUnknown
Tff7b72import T7ee787androidx.compose.material.icons.automirrored.rounded.Message
Tff7b72import T7ee787androidx.compose.material.icons.automirrored.rounded.Send
Tff7b72import T7ee787androidx.compose.material.icons.rounded.AccountCircle
Tff7b72import T7ee787androidx.compose.material.icons.rounded.ExpandLess
Tff7b72import T7ee787androidx.compose.material.icons.rounded.ExpandMore
Tff7b72import T7ee787androidx.compose.material.icons.rounded.GpsFixed
Tff7b72import T7ee787androidx.compose.material.icons.rounded.GpsOff
Tff7b72import T7ee787androidx.compose.material.icons.rounded.Hub
Tff7b72import T7ee787androidx.compose.material.icons.rounded.Info
Tff7b72import T7ee787androidx.compose.material.icons.rounded.MyLocation
Tff7b72import T7ee787androidx.compose.material.icons.rounded.PersonSearch
Tff7b72import T7ee787androidx.compose.material.icons.rounded.Refresh
Tff7b72import T7ee787androidx.compose.material.icons.rounded.RestartAlt
Tff7b72import T7ee787androidx.compose.material.icons.rounded.Route
Tff7b72import T7ee787androidx.compose.material.icons.rounded.Router
Tff7b72import T7ee787androidx.compose.material.icons.rounded.SignalCellularAlt
Tff7b72import T7ee787androidx.compose.material3.Button
Tff7b72import T7ee787androidx.compose.material3.ButtonDefaults
Tff7b72import T7ee787androidx.compose.material3.Card
Tff7b72import T7ee787androidx.compose.material3.CardDefaults
Tff7b72import T7ee787androidx.compose.material3.ExperimentalMaterial3Api
Tff7b72import T7ee787androidx.compose.material3.HorizontalDivider
Tff7b72import T7ee787androidx.compose.material3.Icon
Tff7b72import T7ee787androidx.compose.material3.IconButton
Tff7b72import T7ee787androidx.compose.material3.MaterialTheme
Tff7b72import T7ee787androidx.compose.material3.OutlinedTextField
Tff7b72import T7ee787androidx.compose.material3.Scaffold
Tff7b72import T7ee787androidx.compose.material3.SnackbarHost
Tff7b72import T7ee787androidx.compose.material3.SnackbarHostState
Tff7b72import T7ee787androidx.compose.material3.Text
Tff7b72import T7ee787androidx.compose.material3.TopAppBar
Tff7b72import T7ee787androidx.compose.material3.TopAppBarDefaults
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.runtime.collectAsState
Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.compose.runtime.mutableStateOf
Tff7b72import T7ee787androidx.compose.runtime.remember
Tff7b72import T7ee787androidx.compose.runtime.rememberCoroutineScope
Tff7b72import T7ee787androidx.compose.runtime.setValue
Tff7b72import T7ee787androidx.compose.ui.Alignment
Tff7b72import T7ee787androidx.compose.ui.Modifier
Tff7b72import T7ee787androidx.compose.ui.draw.clip
Tff7b72import T7ee787androidx.compose.ui.graphics.Color
Tff7b72import T7ee787androidx.compose.ui.graphics.vector.ImageVector
Tff7b72import T7ee787androidx.compose.ui.text.font.FontFamily
Tff7b72import T7ee787androidx.compose.ui.text.style.TextAlign
Tff7b72import T7ee787androidx.compose.ui.text.style.TextOverflow
Tff7b72import T7ee787androidx.compose.ui.unit.dp
Tff7b72import T7ee787kotlinx.coroutines.launch
Tff7b72import T7ee787org.meshtastic.core.model.NodeInfo
Tff7b72import T7ee787org.meshtastic.proto.PortNum

Tf0883e@Composable
Tff7b72fun Td2a8ffListItemTb4b4b4(
Te6edf3textTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3supportingTextTb4b4b4: Tffa657String? Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3leadingIconTb4b4b4: Te6edf3ImageVector? Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3trailingIconTb4b4b4: Te6edf3ImageVector? Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3androidxTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3material3Tb4b4b4.Te6edf3ListItemTb4b4b4(
Te6edf3headlineContent Tff7b72= Tb4b4b4{ Te6edf3TextTb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3supportingContent Tff7b72= Te6edf3supportingTextTff7b72?.Te6edf3let Tb4b4b4{ Tb4b4b4{ Te6edf3TextTb4b4b4(Tffa657itTb4b4b4) Tb4b4b4} Tb4b4b4}Tb4b4b4,
Te6edf3leadingContent Tff7b72= Te6edf3leadingIconTff7b72?.Te6edf3let Tb4b4b4{ Tb4b4b4{ Te6edf3IconTb4b4b4(Tffa657itTb4b4b4, Te6edf3contentDescription Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4} Tb4b4b4}Tb4b4b4,
Te6edf3trailingContent Tff7b72= Te6edf3trailingIconTff7b72?.Te6edf3let Tb4b4b4{ Tb4b4b4{ Te6edf3IconTb4b4b4(Tffa657itTb4b4b4, Te6edf3contentDescription Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}

Tf0883e@Composable
Tff7b72fun Td2a8ffTitledCardTb4b4b4(Te6edf3titleTb4b4b4: Tffa657StringTb4b4b4, Te6edf3contentTb4b4b4: Tf0883e@Composable Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4) Tb4b4b4{
Te6edf3CardTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3titleTb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3titleMediumTb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3primaryTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3bottom Tff7b72= T79c0ff1T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3contentTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72fun Td2a8ffSectionHeaderTb4b4b4(Te6edf3titleTb4b4b4: Tffa657StringTb4b4b4, Te6edf3expandedTb4b4b4: Tffa657BooleanTb4b4b4, Te6edf3onExpandClickTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4, Te6edf3modifierTb4b4b4: Te6edf3Modifier Tff7b72= Te6edf3ModifierTb4b4b4) Tb4b4b4{
Te6edf3CardTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3modifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3clickable Tb4b4b4{ Te6edf3onExpandClickTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3colors Tff7b72= Te6edf3CardDefaultsTb4b4b4.Te6edf3cardColorsTb4b4b4(Te6edf3containerColor Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3surfaceVariantTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.5fTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4,
Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(Te6edf3text Tff7b72= Te6edf3titleTb4b4b4, Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3titleMediumTb4b4b4, Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3primaryTb4b4b4)
Te6edf3IconTb4b4b4(
Te6edf3imageVector Tff7b72= Tff7b72if Tb4b4b4(Te6edf3expandedTb4b4b4) Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3ExpandLess Tff7b72else Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3ExpandMoreTb4b4b4,
Te6edf3contentDescription Tff7b72= Tff7b72if Tb4b4b4(Te6edf3expandedTb4b4b4) Ta5d6ff"Ta5d6ffCollapseTa5d6ff" Tff7b72else Ta5d6ff"Ta5d6ffExpandTa5d6ff"Tb4b4b4,
Te6edf3tint Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3primaryTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@OptInTb4b4b4(Te6edf3ExperimentalMaterial3ApiTff7b72::Te6edf3classTb4b4b4)
Tf0883e@Composable
Tff7b72fun Td2a8ffMainScreenTb4b4b4(Te6edf3viewModelTb4b4b4: Te6edf3MeshServiceViewModelTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3isConnected Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3serviceConnectionStatusTb4b4b4.Te6edf3collectAsStateTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3connectionState Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3connectionStateTb4b4b4.Te6edf3collectAsStateTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3snackbarHostState Tff7b72= Te6edf3remember Tb4b4b4{ Te6edf3SnackbarHostStateTb4b4b4(Tb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3scope Tff7b72= Te6edf3rememberCoroutineScopeTb4b4b4(Tb4b4b4)

Te6edf3ScaffoldTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxSizeTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3snackbarHost Tff7b72= Tb4b4b4{ Te6edf3SnackbarHostTb4b4b4(Te6edf3snackbarHostStateTb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3topBar Tff7b72= Tb4b4b4{
Te6edf3TopAppBarTb4b4b4(
Te6edf3title Tff7b72= Tb4b4b4{ Te6edf3TopBarTitleTb4b4b4(Te6edf3isConnectedTb4b4b4, Te6edf3connectionStateTb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3actions Tff7b72= Tb4b4b4{
Te6edf3IconButtonTb4b4b4(
Te6edf3onClick Tff7b72= Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3requestNodesTb4b4b4(Tb4b4b4)
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{ Te6edf3snackbarHostStateTb4b4b4.Te6edf3showSnackbarTb4b4b4(Ta5d6ff"Ta5d6ffRefreshing nodes...Ta5d6ff"Tb4b4b4) Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3RefreshTb4b4b4, Te6edf3contentDescription Tff7b72= Ta5d6ff"Ta5d6ffRefresh NodesTa5d6ff"Tb4b4b4)
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3colors Tff7b72=
Te6edf3TopAppBarDefaultsTb4b4b4.Te6edf3topAppBarColorsTb4b4b4(
Te6edf3containerColor Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3surfaceTb4b4b4,
Te6edf3titleContentColor Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{ Te6edf3innerPadding Tff7b72-Tff7b72>
Te6edf3MainContentTb4b4b4(Te6edf3viewModelTb4b4b4, Te6edf3innerPaddingTb4b4b4, Te6edf3snackbarHostStateTb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffTopBarTitleTb4b4b4(Te6edf3isConnectedTb4b4b4: Tffa657BooleanTb4b4b4, Te6edf3connectionStateTb4b4b4: Tffa657StringTb4b4b4) Tb4b4b4{
Te6edf3Column Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffMesh Service ExampleTa5d6ff"Tb4b4b4,
Te6edf3maxLines Tff7b72= T79c0ff1Tb4b4b4,
Te6edf3overflow Tff7b72= Te6edf3TextOverflowTb4b4b4.Te6edf3EllipsisTb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3titleLargeTb4b4b4,
Tb4b4b4)
Te6edf3RowTb4b4b4(Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3statusColor Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3isConnectedTb4b4b4) Tb4b4b4{
Te6edf3ColorTb4b4b4.Te6edf3Green
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3error
Tb4b4b4}
Te6edf3BoxTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4.Te6edf3clipTb4b4b4(Te6edf3CircleShapeTb4b4b4)Tb4b4b4.Te6edf3backgroundTb4b4b4(Te6edf3statusColorTb4b4b4)Tb4b4b4)
Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3widthTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4)
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Tff7b72if Tb4b4b4(Te6edf3isConnectedTb4b4b4) Ta5d6ff"Ta5d6ffConnected (Tffd700$Te6edf3connectionStateTa5d6ff)Ta5d6ff" Tff7b72else Ta5d6ff"Ta5d6ffDisconnectedTa5d6ff"Tb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelMediumTb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceVariantTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffLongMethodTa5d6ff"Tb4b4b4)
Tff7b72private Tff7b72fun Td2a8ffMainContentTb4b4b4(
Te6edf3viewModelTb4b4b4: Te6edf3MeshServiceViewModelTb4b4b4,
Te6edf3innerPaddingTb4b4b4: Te6edf3PaddingValuesTb4b4b4,
Te6edf3snackbarHostStateTb4b4b4: Te6edf3SnackbarHostStateTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3myNodeInfo Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3myNodeInfoTb4b4b4.Te6edf3collectAsStateTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3myId Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3myIdTb4b4b4.Te6edf3collectAsStateTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3nodes Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3collectAsStateTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3lastMessage Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3collectAsStateTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3packetLog Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3packetLogTb4b4b4.Te6edf3collectAsStateTb4b4b4(Tb4b4b4)

Tff7b72var Te6edf3nodesExpanded Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Tff7b72falseTb4b4b4) Tb4b4b4}
Tff7b72var Te6edf3logExpanded Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Tff7b72falseTb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3scope Tff7b72= Te6edf3rememberCoroutineScopeTb4b4b4(Tb4b4b4)

Te6edf3LazyColumnTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3innerPaddingTb4b4b4)Tb4b4b4.Te6edf3fillMaxSizeTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3contentPadding Tff7b72= Te6edf3PaddingValuesTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3verticalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3item Tb4b4b4{ Te6edf3MyInfoSectionTb4b4b4(Te6edf3myIdTb4b4b4, Te6edf3myNodeInfoTb4b4b4) Tb4b4b4}
Te6edf3item Tb4b4b4{ Te6edf3TitledCardTb4b4b4(Te6edf3title Tff7b72= Ta5d6ff"Ta5d6ffMessagingTa5d6ff"Tb4b4b4) Tb4b4b4{ Te6edf3MessagingSectionTb4b4b4(Te6edf3viewModelTb4b4b4, Te6edf3lastMessageTb4b4b4) Tb4b4b4} Tb4b4b4}
Te6edf3item Tb4b4b4{ Te6edf3TitledCardTb4b4b4(Te6edf3title Tff7b72= Ta5d6ff"Ta5d6ffTest Special PortNumsTa5d6ff"Tb4b4b4) Tb4b4b4{ Te6edf3SpecialAppSectionTb4b4b4(Te6edf3viewModelTb4b4b4) Tb4b4b4} Tb4b4b4}

Te6edf3item Tb4b4b4{
Te6edf3SectionHeaderTb4b4b4(
Te6edf3title Tff7b72= Ta5d6ff"Ta5d6ffMesh Nodes (Tffd700${Te6edf3nodesTb4b4b4.Te6edf3sizeTffd700}Ta5d6ff)Ta5d6ff"Tb4b4b4,
Te6edf3expanded Tff7b72= Te6edf3nodesExpandedTb4b4b4,
Te6edf3onExpandClick Tff7b72= Tb4b4b4{ Te6edf3nodesExpanded Tff7b72= Tff7b72!Te6edf3nodesExpanded Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3nodesExpandedTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3nodesTb4b4b4.Te6edf3isEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3item Tb4b4b4{ Te6edf3EmptyNodeStateTb4b4b4(Tb4b4b4) Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3itemsTb4b4b4(Te6edf3nodesTb4b4b4) Tb4b4b4{ Te6edf3node Tff7b72-Tff7b72>
Te6edf3CardTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3nodeLabel Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3userTff7b72?.Te6edf3longName Tff7b72?: Te6edf3nodeTb4b4b4.Te6edf3userTff7b72?.Te6edf3id Tff7b72?: Ta5d6ff"Ta5d6ffUnknown NodeTa5d6ff"
Te6edf3NodeItemTb4b4b4(Te6edf3nodeTb4b4b4) Tb4b4b4{ Te6edf3action Tff7b72-Tff7b72>
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{
Tff7b72when Tb4b4b4(Te6edf3actionTb4b4b4) Tb4b4b4{
Ta5d6ff"Ta5d6fftracerouteTa5d6ff" Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3requestTracerouteTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4)
Te6edf3snackbarHostStateTb4b4b4.Te6edf3showSnackbarTb4b4b4(Ta5d6ff"Ta5d6ffTraceroute requested for Tffd700$Te6edf3nodeLabelTa5d6ff"Tb4b4b4)
Tb4b4b4}
Ta5d6ff"Ta5d6fftelemetryTa5d6ff" Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3requestTelemetryTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4)
Te6edf3snackbarHostStateTb4b4b4.Te6edf3showSnackbarTb4b4b4(Ta5d6ff"Ta5d6ffTelemetry requested for Tffd700$Te6edf3nodeLabelTa5d6ff"Tb4b4b4)
Tb4b4b4}
Ta5d6ff"Ta5d6ffneighborsTa5d6ff" Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3requestNeighborInfoTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4)
Te6edf3snackbarHostStateTb4b4b4.Te6edf3showSnackbarTb4b4b4(Ta5d6ff"Ta5d6ffNeighbor info requested for Tffd700$Te6edf3nodeLabelTa5d6ff"Tb4b4b4)
Tb4b4b4}
Ta5d6ff"Ta5d6ffpositionTa5d6ff" Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3requestPositionTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4)
Te6edf3snackbarHostStateTb4b4b4.Te6edf3showSnackbarTb4b4b4(Ta5d6ff"Ta5d6ffPosition requested for Tffd700$Te6edf3nodeLabelTa5d6ff"Tb4b4b4)
Tb4b4b4}
Ta5d6ff"Ta5d6ffuserinfoTa5d6ff" Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3requestUserInfoTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4)
Te6edf3snackbarHostStateTb4b4b4.Te6edf3showSnackbarTb4b4b4(Ta5d6ff"Ta5d6ffUser info requested for Tffd700$Te6edf3nodeLabelTa5d6ff"Tb4b4b4)
Tb4b4b4}
Ta5d6ff"Ta5d6ffconnstatusTa5d6ff" Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3requestDeviceConnectionStatusTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4)
Te6edf3snackbarHostStateTb4b4b4.Te6edf3showSnackbarTb4b4b4(Ta5d6ff"Ta5d6ffConnection status requested for Tffd700$Te6edf3nodeLabelTa5d6ff"Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Te6edf3item Tb4b4b4{
Te6edf3SectionHeaderTb4b4b4(Te6edf3title Tff7b72= Ta5d6ff"Ta5d6ffPacket LogTa5d6ff"Tb4b4b4, Te6edf3expanded Tff7b72= Te6edf3logExpandedTb4b4b4, Te6edf3onExpandClick Tff7b72= Tb4b4b4{ Te6edf3logExpanded Tff7b72= Tff7b72!Te6edf3logExpanded Tb4b4b4}Tb4b4b4)
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3logExpandedTb4b4b4) Tb4b4b4{
Te6edf3item Tb4b4b4{
Te6edf3CardTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3BoxTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{ Te6edf3PacketLogContentTb4b4b4(Te6edf3packetLogTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Te6edf3item Tb4b4b4{ Te6edf3ActionButtonsTb4b4b4(Te6edf3viewModelTb4b4b4, Te6edf3snackbarHostStateTb4b4b4) Tb4b4b4}
Te6edf3item Tb4b4b4{ Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3heightTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72fun Td2a8ffSpecialAppSectionTb4b4b4(Te6edf3viewModelTb4b4b4: Te6edf3MeshServiceViewModelTb4b4b4) Tb4b4b4{
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4, Te6edf3verticalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3sendSpecialPacketTb4b4b4(Te6edf3PortNumTb4b4b4.Te6edf3ATAK_PLUGINTb4b4b4) Tb4b4b4}Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3weightTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(Ta5d6ff"Ta5d6ffSend ATAKTa5d6ff"Tb4b4b4)
Tb4b4b4}
Te6edf3ButtonTb4b4b4(
Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3sendSpecialPacketTb4b4b4(Te6edf3PortNumTb4b4b4.Te6edf3DETECTION_SENSOR_APPTb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3weightTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(Ta5d6ff"Ta5d6ffSend SensorTa5d6ff"Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Te6edf3RowTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3sendSpecialPacketTb4b4b4(Te6edf3PortNumTb4b4b4.Te6edf3PRIVATE_APPTb4b4b4) Tb4b4b4}Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3weightTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(Ta5d6ff"Ta5d6ffSend PrivateTa5d6ff"Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffPacketLogContentTb4b4b4(Te6edf3logTb4b4b4: Te6edf3ListTff7b72<Tffa657StringTff7b72>Tb4b4b4) Tb4b4b4{
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3heightInTb4b4b4(Te6edf3max Tff7b72= T79c0ff3T79c0ff0T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4.Te6edf3verticalScrollTb4b4b4(Te6edf3rememberScrollStateTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3logTb4b4b4.Te6edf3isEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffNo packets yet.Ta5d6ff"Tb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3bodySmallTb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceVariantTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3logTb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3entry Tff7b72-Tff7b72>
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3entryTb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3bodySmallTb4b4b4,
Te6edf3fontFamily Tff7b72= Te6edf3FontFamilyTb4b4b4.Te6edf3MonospaceTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3HorizontalDividerTb4b4b4(Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3outlineVariantTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.2fTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffMyInfoSectionTb4b4b4(Te6edf3myIdTb4b4b4: Tffa657String?Tb4b4b4, Te6edf3myNodeInfoTb4b4b4: Te6edf3orgTb4b4b4.Te6edf3meshtasticTb4b4b4.Te6edf3coreTb4b4b4.Te6edf3modelTb4b4b4.Te6edf3MyNodeInfoTff7b72?Tb4b4b4) Tb4b4b4{
Te6edf3TitledCardTb4b4b4(Te6edf3title Tff7b72= Ta5d6ff"Ta5d6ffMy Node InformationTa5d6ff"Tb4b4b4) Tb4b4b4{
Te6edf3ListItemTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffLong IDTa5d6ff"Tb4b4b4,
Te6edf3supportingText Tff7b72= Te6edf3myId Tff7b72?: Ta5d6ff"Ta5d6ffN/ATa5d6ff"Tb4b4b4,
Te6edf3leadingIcon Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3AccountCircleTb4b4b4,
Te6edf3trailingIcon Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4)
Te6edf3ListItemTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffFirmwareTa5d6ff"Tb4b4b4,
Te6edf3supportingText Tff7b72= Te6edf3myNodeInfoTff7b72?.Te6edf3firmwareString Tff7b72?: Ta5d6ff"Ta5d6ffN/ATa5d6ff"Tb4b4b4,
Te6edf3leadingIcon Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3InfoTb4b4b4,
Te6edf3trailingIcon Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffEmptyNodeStateTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffNo mesh nodes discovered yet.Ta5d6ff"Tb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3bodyMediumTb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceVariantTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff3T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3textAlign Tff7b72= Te6edf3TextAlignTb4b4b4.Te6edf3CenterTb4b4b4,
Tb4b4b4)
Tb4b4b4}

Tf0883e@Composable
Tff7b72fun Td2a8ffMessagingSectionTb4b4b4(Te6edf3viewModelTb4b4b4: Te6edf3MeshServiceViewModelTb4b4b4, Te6edf3lastMessageTb4b4b4: Tffa657StringTb4b4b4) Tb4b4b4{
Tff7b72var Te6edf3textToSend Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4) Tb4b4b4}

Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3lastMessageTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3CardTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3colors Tff7b72=
Te6edf3CardDefaultsTb4b4b4.Te6edf3cardColorsTb4b4b4(
Te6edf3containerColor Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3surfaceVariantTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.3fTb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3ListItemTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffLast ReceivedTa5d6ff"Tb4b4b4,
Te6edf3supportingText Tff7b72= Te6edf3lastMessageTb4b4b4,
Te6edf3leadingIcon Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3AutoMirroredTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3MessageTb4b4b4,
Te6edf3trailingIcon Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3heightTb4b4b4(T79c0ff1T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4)
Tb4b4b4}
Te6edf3RowTb4b4b4(Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4) Tb4b4b4{
Te6edf3OutlinedTextFieldTb4b4b4(
Te6edf3value Tff7b72= Te6edf3textToSendTb4b4b4,
Te6edf3onValueChange Tff7b72= Tb4b4b4{ Te6edf3textToSend Tff7b72= Tffa657it Tb4b4b4}Tb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3weightTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4,
Te6edf3label Tff7b72= Tb4b4b4{ Te6edf3TextTb4b4b4(Ta5d6ff"Ta5d6ffSend broadcast messageTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3shape Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3shapesTb4b4b4.Te6edf3largeTb4b4b4,
Tb4b4b4)
Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3widthTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4)
Te6edf3ButtonTb4b4b4(
Te6edf3onClick Tff7b72= Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3textToSendTb4b4b4.Te6edf3isNotBlankTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3sendMessageTb4b4b4(Te6edf3textToSendTb4b4b4)
Te6edf3textToSend Tff7b72= Ta5d6ff"Ta5d6ff"
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff5T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3shape Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3shapesTb4b4b4.Te6edf3largeTb4b4b4,
Te6edf3contentPadding Tff7b72= Te6edf3PaddingValuesTb4b4b4(T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3imageVector Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3AutoMirroredTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3SendTb4b4b4, Te6edf3contentDescription Tff7b72= Ta5d6ff"Ta5d6ffSendTa5d6ff"Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72fun Td2a8ffNodeItemTb4b4b4(Te6edf3nodeTb4b4b4: Te6edf3NodeInfoTb4b4b4, Te6edf3onActionTb4b4b4: Tb4b4b4(Tffa657StringTb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4) Tb4b4b4{
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3NodeItemHeaderTb4b4b4(Te6edf3nodeTb4b4b4)
Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3heightTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4)
Te6edf3NodeItemActionsTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3isOnlineTb4b4b4, Te6edf3onActionTb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffNodeItemHeaderTb4b4b4(Te6edf3nodeTb4b4b4: Te6edf3NodeInfoTb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4) Tb4b4b4{
Te6edf3BoxTb4b4b4(Te6edf3contentAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3BottomEndTb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(
Te6edf3imageVector Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3AccountCircleTb4b4b4,
Te6edf3contentDescription Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff4T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3tint Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3outlineTb4b4b4,
Tb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3isOnlineTb4b4b4) Tb4b4b4{
Te6edf3BoxTb4b4b4(
Te6edf3modifier Tff7b72=
Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff1T79c0ff4.Te6edf3dpTb4b4b4)
Tb4b4b4.Te6edf3clipTb4b4b4(Te6edf3CircleShapeTb4b4b4)
Tb4b4b4.Te6edf3backgroundTb4b4b4(Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3surfaceTb4b4b4)
Tb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff2.Te6edf3dpTb4b4b4)
Tb4b4b4.Te6edf3clipTb4b4b4(Te6edf3CircleShapeTb4b4b4)
Tb4b4b4.Te6edf3backgroundTb4b4b4(Te6edf3ColorTb4b4b4.Te6edf3GreenTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3widthTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4)
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3weightTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3userTff7b72?.Te6edf3longName Tff7b72?: Ta5d6ff"Ta5d6ffUnknown NodeTa5d6ff"Tb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3titleMediumTb4b4b4,
Te6edf3maxLines Tff7b72= T79c0ff1Tb4b4b4,
Te6edf3overflow Tff7b72= Te6edf3TextOverflowTb4b4b4.Te6edf3EllipsisTb4b4b4,
Tb4b4b4)
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffID: Tffd700${Te6edf3nodeTb4b4b4.Te6edf3userTff7b72?.Te6edf3id Tff7b72?: Ta5d6ff"Te6edf3NTff7b72/Te6edf3ATa5d6ff"Tffd700}Ta5d6ff"Tb4b4b4,
Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3bodySmallTb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceVariantTb4b4b4,
Te6edf3maxLines Tff7b72= T79c0ff1Tb4b4b4,
Te6edf3overflow Tff7b72= Te6edf3TextOverflowTb4b4b4.Te6edf3EllipsisTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffNodeItemActionsTb4b4b4(Te6edf3isOnlineTb4b4b4: Tffa657BooleanTb4b4b4, Te6edf3onActionTb4b4b4: Tb4b4b4(Tffa657StringTb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3EndTb4b4b4,
Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3IconButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3onActionTb4b4b4(Ta5d6ff"Ta5d6fftracerouteTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff4T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3RouteTb4b4b4, Ta5d6ff"Ta5d6ffTracerouteTa5d6ff"Tb4b4b4, Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff2T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4, Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3primaryTb4b4b4)
Tb4b4b4}
Te6edf3IconButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3onActionTb4b4b4(Ta5d6ff"Ta5d6fftelemetryTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff4T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(
Te6edf3IconsTb4b4b4.Te6edf3AutoMirroredTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3BatteryUnknownTb4b4b4,
Ta5d6ff"Ta5d6ffTelemetryTa5d6ff"Tb4b4b4,
Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff2T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3secondaryTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Te6edf3IconButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3onActionTb4b4b4(Ta5d6ff"Ta5d6ffpositionTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff4T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3MyLocationTb4b4b4, Ta5d6ff"Ta5d6ffPositionTa5d6ff"Tb4b4b4, Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff2T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4, Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3tertiaryTb4b4b4)
Tb4b4b4}
Te6edf3IconButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3onActionTb4b4b4(Ta5d6ff"Ta5d6ffneighborsTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff4T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3HubTb4b4b4, Ta5d6ff"Ta5d6ffNeighborsTa5d6ff"Tb4b4b4, Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff2T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4, Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3tertiaryTb4b4b4)
Tb4b4b4}
Te6edf3IconButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3onActionTb4b4b4(Ta5d6ff"Ta5d6ffuserinfoTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff4T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3PersonSearchTb4b4b4, Ta5d6ff"Ta5d6ffUser InfoTa5d6ff"Tb4b4b4, Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff2T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4, Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3outlineTb4b4b4)
Tb4b4b4}
Te6edf3IconButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3onActionTb4b4b4(Ta5d6ff"Ta5d6ffconnstatusTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4, Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff4T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(
Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3SignalCellularAltTb4b4b4,
Ta5d6ff"Ta5d6ffConn StatusTa5d6ff"Tb4b4b4,
Te6edf3ModifierTb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff2T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3outlineTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3isOnlineTb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(
Te6edf3imageVector Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3RouterTb4b4b4,
Te6edf3contentDescription Tff7b72= Ta5d6ff"Ta5d6ffOnlineTa5d6ff"Tb4b4b4,
Te6edf3tint Tff7b72= Te6edf3androidxTb4b4b4.Te6edf3composeTb4b4b4.Te6edf3uiTb4b4b4.Te6edf3graphicsTb4b4b4.Te6edf3ColorTb4b4b4.Te6edf3GreenTb4b4b4.Te6edf3copyTb4b4b4(Te6edf3alpha Tff7b72= T79c0ff0.5fTb4b4b4)Tb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3start Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4.Te6edf3sizeTb4b4b4(T79c0ff2T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffActionButtonsTb4b4b4(Te6edf3viewModelTb4b4b4: Te6edf3MeshServiceViewModelTb4b4b4, Te6edf3snackbarHostStateTb4b4b4: Te6edf3SnackbarHostStateTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3scope Tff7b72= Te6edf3rememberCoroutineScopeTb4b4b4(Tb4b4b4)
Te6edf3TitledCardTb4b4b4(Te6edf3title Tff7b72= Ta5d6ff"Ta5d6ffDevice ControlsTa5d6ff"Tb4b4b4) Tb4b4b4{
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4, Te6edf3verticalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff1T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3GpsButtonsTb4b4b4(Te6edf3viewModelTb4b4b4, Te6edf3snackbarHostStateTb4b4b4)
Te6edf3ButtonTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3rebootLocalDeviceTb4b4b4(Tb4b4b4)
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{ Te6edf3snackbarHostStateTb4b4b4.Te6edf3showSnackbarTb4b4b4(Ta5d6ff"Ta5d6ffReboot RequestedTa5d6ff"Tb4b4b4) Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3shape Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3shapesTb4b4b4.Te6edf3mediumTb4b4b4,
Te6edf3colors Tff7b72=
Te6edf3ButtonDefaultsTb4b4b4.Te6edf3buttonColorsTb4b4b4(
Te6edf3containerColor Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3errorContainerTb4b4b4,
Te6edf3contentColor Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onErrorContainerTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3imageVector Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3RestartAltTb4b4b4, Te6edf3contentDescription Tff7b72= Tff7b72nullTb4b4b4)
Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3widthTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4)
Te6edf3TextTb4b4b4(Ta5d6ff"Ta5d6ffReboot RadioTa5d6ff"Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffGpsButtonsTb4b4b4(Te6edf3viewModelTb4b4b4: Te6edf3MeshServiceViewModelTb4b4b4, Te6edf3snackbarHostStateTb4b4b4: Te6edf3SnackbarHostStateTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3scope Tff7b72= Te6edf3rememberCoroutineScopeTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3colors Tff7b72=
Te6edf3ButtonDefaultsTb4b4b4.Te6edf3buttonColorsTb4b4b4(
Te6edf3containerColor Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3secondaryContainerTb4b4b4,
Te6edf3contentColor Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSecondaryContainerTb4b4b4,
Tb4b4b4)
Te6edf3RowTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ButtonTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3weightTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3startProvideLocationTb4b4b4(Tb4b4b4)
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{ Te6edf3snackbarHostStateTb4b4b4.Te6edf3showSnackbarTb4b4b4(Ta5d6ff"Ta5d6ffGPS Sharing StartedTa5d6ff"Tb4b4b4) Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3shape Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3shapesTb4b4b4.Te6edf3mediumTb4b4b4,
Te6edf3colors Tff7b72= Te6edf3colorsTb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3imageVector Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3GpsFixedTb4b4b4, Te6edf3contentDescription Tff7b72= Tff7b72nullTb4b4b4)
Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3widthTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4)
Te6edf3TextTb4b4b4(Ta5d6ff"Ta5d6ffStart GPSTa5d6ff"Tb4b4b4, Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4)
Tb4b4b4}
Te6edf3ButtonTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3weightTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{
Te6edf3viewModelTb4b4b4.Te6edf3stopProvideLocationTb4b4b4(Tb4b4b4)
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{ Te6edf3snackbarHostStateTb4b4b4.Te6edf3showSnackbarTb4b4b4(Ta5d6ff"Ta5d6ffGPS Sharing StoppedTa5d6ff"Tb4b4b4) Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3shape Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3shapesTb4b4b4.Te6edf3mediumTb4b4b4,
Te6edf3colors Tff7b72= Te6edf3colorsTb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3imageVector Tff7b72= Te6edf3IconsTb4b4b4.Te6edf3RoundedTb4b4b4.Te6edf3GpsOffTb4b4b4, Te6edf3contentDescription Tff7b72= Tff7b72nullTb4b4b4)
Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3widthTb4b4b4(T79c0ff8.Te6edf3dpTb4b4b4)Tb4b4b4)
Te6edf3TextTb4b4b4(Ta5d6ff"Ta5d6ffStop GPSTa5d6ff"Tb4b4b4, Te6edf3style Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.2s